/*
 * Main.fx
 *
 * Created on 05.11.2009, 23:10:11
 */

package javafx179labs.nez.lab4;

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.paint.Color;
import javafx.scene.input.MouseEvent;
import javafx.animation.transition.FadeTransition;
import javafx.animation.Timeline;
import javafx.animation.KeyFrame;
import javafx.scene.Group;
import java.util.Random;
import java.lang.Math;
import javafx.scene.Node;
import javafx179labs.nez.lab4.Sun;
import javafx179labs.nez.lab4.Human;
import javafx179labs.nez.lab4.Bird;
import javafx.scene.shape.Ellipse;

/**
 * @author civil
 */

//кликать можно на "солнышко", птичек и чувака, солнышко, по клику начинает вращаться
//чувак выдаёт случаёную фразу из списка, птичка просто исчезает
//а вообще я в курсе, что сильно по наркомански вышло, но с воображением что-то напряг -_-'


var sun: Sun = Sun {
    x: 1130
    y: 150
    beginR: 50
    endR: 200
    onMouseClicked: function (e: MouseEvent) {
        sun.play();
    }

}

def beginX = 100;
def endX = 1180;

var texts = ["убери мышь <_<", "ну хватит хватит", "птички летают", "хорошая погода правда?", "Буу"];
var random = new Random();
var message: Node;

function mess() {
    var ell: Ellipse = Ellipse {
        centerX: bind human.x + 150
        centerY: bind human.y - 200
        radiusX: 150
        radiusY: 30
        fill: Color.WHITE
        stroke: Color.BLACK
    }

    message = Group {
        content: [
                ell,
                Text {
                    x: bind  ell.centerX - 130
                    y: bind ell.centerY + 5
                    content: texts[Math.abs(random.nextInt() mod texts.size())]
                    font: Font {
                        size: 20
                    }
                    fill: Color.BLACK
                }
        ]
    }

    var fade = FadeTransition {
                    fromValue: 1.0
                    toValue: 0.0
                    duration: 3s
                    node: message
    }

    fade.play();
}



var human: Human =  Human{
     x: beginX
     y: 600
     onMouseClicked: function (e: MouseEvent) {
         mess()
     }

}

human.animation();


var tl = Timeline {
    repeatCount: Timeline.INDEFINITE
    autoReverse: true
    keyFrames: [
            KeyFrame {
                time: (endX - beginX) / 100 * 3s
                values: [human.x => endX]
            }

    ]
}

tl.play();

var bird: Bird = Bird {
    x: 300
    y: 300
}

bird.animation();

Stage {
    title: "Application title"
    width: 1280
    height: 600
    scene: Scene {
        content: bind [
                sun, human, Bird.birdGenerator(30, 2s), message

        ]
    }
}